package org.example.old;

public class A {

    static {
        System.out.println("A中的静态块:1-----1"); // 3
    }

    static {
        System.out.println("A中的静态块:2-------2"); // 4
    }

    {
        System.out.println("A中的非静态块--------3"); // 7
    }

    public A() {
        System.out.println("A构造方法【我是B的父类】----4");// 8
    }


}


class B extends A{



    static {
        System.out.println("B中的静态块:1------5");// 5
    }

    static {
        System.out.println("B中的静态块:2------6");// 6
    }
    {
        System.out.println("B中的非静态块----------7");// 14
    }
    public B() {
        System.out.println("B构造方法-----------8"); // 15

    }
    E e = new E();

//    public static void main(String[] args) {
//        new B();
//    }
}

class E{

    public E() {
        System.out.println("E的构造方法【我是在B类里面被调用了】-------11"); // 11
        new D();
    }

    static {
        System.out.println("E中的静态块--------9"); // 9
    }

    {
        System.out.println("E中的非静态块-----10");// 10

    }
}

class D {
    static {
        System.out.println("D中的静态块---------12");// 1
    }
    public D(){
        System.out.println("D的构造器【我是在E的构造器里面被调用了】------14");// 13
    }
    {
        System.out.println("D的非静态块-------13");// 12
    }
}

class C {
    static {
        System.out.println("C中的静态块---------12");// 1
    }
    public C(){
        System.out.println("C的构造器【我是在E的构造器里面被调用了】------14");// 13
    }
    {
        System.out.println("C的非静态块-------13");// 12
    }
}

class F extends C {
    static {
        System.out.println("F中的静态块----15");// 2
    }
    public F(){
        System.out.println("F的构造器--------16"); // 没有人调用，所以没有顺序
    }
    public static void main(String[] args) {
        new B();
    }
}

